home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 January / maximum-cd-1999-01.iso / Benchmarks / 12 Step / MusicMatch Jukebox / mmsetup.EXE / data1.cab / Help_Files / WebHelp.cab / hhapplet / SiteMapParserToIndex.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-27  |  3.4 KB  |  216 lines

  1. package hhapplet;
  2.  
  3. import java.applet.Applet;
  4. import java.util.Vector;
  5. import sitemap.SiteMapParserOutput;
  6.  
  7. public class SiteMapParserToIndex implements SiteMapParserOutput {
  8.    protected Applet m_applet;
  9.    protected IndexPane m_ipIndex;
  10.    protected int ind;
  11.    protected int real_ind;
  12.    protected boolean done_a_node;
  13.    protected int param_no = -1;
  14.    protected String m_strName;
  15.    protected Vector secondary_entries;
  16.    protected boolean m_bInGlobal = true;
  17.    protected char m_chCurrentStart = ' ';
  18.    protected String default_frame_name;
  19.  
  20.    public void end() {
  21.       this.m_applet.showStatus("Done");
  22.    }
  23.  
  24.    public void object_start() {
  25.       this.done_a_node = true;
  26.       this.m_bInGlobal = false;
  27.       this.param_no = -1;
  28.       this.secondary_entries = new Vector();
  29.    }
  30.  
  31.    public void indent(int var1) {
  32.       if (var1 == 1) {
  33.          ++this.real_ind;
  34.          if (this.done_a_node) {
  35.             ++this.ind;
  36.          }
  37.       } else if (var1 == -1) {
  38.          this.real_ind += -1;
  39.          this.ind = this.real_ind;
  40.       }
  41.  
  42.       this.done_a_node = false;
  43.    }
  44.  
  45.    private String indent_string() {
  46.       String var1 = "";
  47.  
  48.       for(int var2 = 0; var2 < this.ind; ++var2) {
  49.          var1 = var1 + "  ";
  50.       }
  51.  
  52.       return var1;
  53.    }
  54.  
  55.    public IndexPane getIndex() {
  56.       return this.m_ipIndex;
  57.    }
  58.  
  59.    public void start() {
  60.    }
  61.  
  62.    public void object_end() {
  63.       this.m_ipIndex.add(this.indent_string() + this.m_strName, this.secondary_entries);
  64.       if (this.m_strName != null && this.m_strName.length() != 0) {
  65.          char var1 = Character.toUpperCase(this.m_strName.charAt(0));
  66.          if (this.ind == 0 && var1 != this.m_chCurrentStart) {
  67.             this.m_chCurrentStart = var1;
  68.             String var2 = "Loading Index (";
  69.             var2 = var2 + var1;
  70.             var2 = var2 + ")...";
  71.             this.m_applet.showStatus(var2);
  72.          }
  73.  
  74.       }
  75.    }
  76.  
  77.    public IndexSecondaryEntry getLatestEntry() {
  78.       int var1 = this.param_no == 0 ? 0 : this.param_no - 1;
  79.       if (this.secondary_entries.size() < var1 + 1) {
  80.          this.secondary_entries.setSize(var1 + 1);
  81.          this.secondary_entries.setElementAt(new IndexSecondaryEntry(), var1);
  82.       }
  83.  
  84.       return (IndexSecondaryEntry)this.secondary_entries.elementAt(var1);
  85.    }
  86.  
  87.    public void param(String var1, String var2) {
  88.       char var3 = Character.toUpperCase(var1.charAt(0));
  89.       if (this.m_bInGlobal) {
  90.          if (var3 == 'F' && var1.equalsIgnoreCase("FrameName")) {
  91.             this.default_frame_name = var2;
  92.             return;
  93.          }
  94.       } else {
  95.          switch (var3) {
  96.             case 'F':
  97.                if (var1.equalsIgnoreCase("Frame")) {
  98.                   this.getLatestEntry().frame = var2;
  99.                   return;
  100.                }
  101.                break;
  102.             case 'L':
  103.                if (var1.equalsIgnoreCase("Local")) {
  104.                   this.getLatestEntry().local = var2;
  105.                   return;
  106.                }
  107.                break;
  108.             case 'N':
  109.                if (var1.equalsIgnoreCase("Name")) {
  110.                   ++this.param_no;
  111.                   var2 = this.fixSpecialCharacters(var2);
  112.                   this.getLatestEntry().name = var2;
  113.                   this.getLatestEntry();
  114.                   if (this.getLatestEntry().frame == null) {
  115.                      this.getLatestEntry().frame = this.default_frame_name;
  116.                   }
  117.  
  118.                   if (this.param_no == 0) {
  119.                      this.m_strName = var2;
  120.                      return;
  121.                   }
  122.                }
  123.                break;
  124.             case 'S':
  125.                if (var1.equalsIgnoreCase("See Also")) {
  126.                   this.getLatestEntry().see_also = var2;
  127.                   return;
  128.                }
  129.                break;
  130.             case 'U':
  131.                if (var1.equalsIgnoreCase("URL")) {
  132.                   this.getLatestEntry().url = var2;
  133.                   return;
  134.                }
  135.          }
  136.       }
  137.  
  138.    }
  139.  
  140.    String fixSpecialCharacters(String var1) {
  141.       int var2 = var1.indexOf(38);
  142.       if (var2 < 0) {
  143.          return var1;
  144.       } else {
  145.          String var3 = "";
  146.  
  147.          while(var2 > -1 && var2 < var1.length() - 2) {
  148.             var3 = var3 + var1.substring(0, var2);
  149.             String var4 = var1.substring(var2);
  150.             int var5 = var4.indexOf(59);
  151.             if (var5 < 0) {
  152.                var3 = var3 + var4;
  153.                break;
  154.             }
  155.  
  156.             if (var5 < var4.length() - 1) {
  157.                var1 = var4.substring(var5 + 1);
  158.             } else {
  159.                var1 = "";
  160.             }
  161.  
  162.             var4 = var4.substring(1, var5);
  163.             switch (Character.toUpperCase(var4.charAt(0))) {
  164.                case 'A':
  165.                   if (var4.equalsIgnoreCase("amp")) {
  166.                      var4 = "&";
  167.                   }
  168.                   break;
  169.                case 'C':
  170.                   if (var4.equalsIgnoreCase("copy")) {
  171.                      var4 = "(c)";
  172.                   }
  173.                   break;
  174.                case 'G':
  175.                   if (var4.equalsIgnoreCase("gt")) {
  176.                      var4 = ">";
  177.                   }
  178.                   break;
  179.                case 'L':
  180.                   if (var4.equalsIgnoreCase("lt")) {
  181.                      var4 = "<";
  182.                   }
  183.                   break;
  184.                case 'N':
  185.                   if (var4.equalsIgnoreCase("nbsp")) {
  186.                      var4 = " ";
  187.                   }
  188.                   break;
  189.                case 'Q':
  190.                   if (var4.equalsIgnoreCase("quot")) {
  191.                      var4 = "\"";
  192.                   }
  193.                   break;
  194.                case 'R':
  195.                   if (var4.equalsIgnoreCase("reg")) {
  196.                      var4 = "(R)";
  197.                   }
  198.             }
  199.  
  200.             var3 = var3 + var4;
  201.             var2 = var1.indexOf(38);
  202.             if (var2 < 0) {
  203.                var3 = var3 + var1;
  204.             }
  205.          }
  206.  
  207.          return var3;
  208.       }
  209.    }
  210.  
  211.    public SiteMapParserToIndex(Applet var1) {
  212.       this.m_applet = var1;
  213.       this.m_ipIndex = new IndexPane(this.m_applet);
  214.    }
  215. }
  216.